The virtualization of computing systems has enabled the flexible and convenient setup and maintenance of computing systems. A computing system is virtualized by having a virtual machine operate remotely from the client computing system that the virtual machine serves. The virtual machine emulates the logic of a fully operational computing system including the operating system, its various applications, and corresponding settings, and interfaces with the user via a remotely located client computing system. For instance, the virtual machine receives client input from the remote client, and provides resulting desktop image information back to the client. The client does not operate the corresponding operating system, but rather just receives the user input, relays such user input to the virtual machine, and renders the desktop using the resulting desktop image provided by the virtual machine.
Virtual machines have more recently be implemented in cloud computing environments. “Cloud computing” is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services). The shared pool of configurable computing resources can be rapidly provisioned via virtualization and released with low management effort or service provider interaction, and then scaled accordingly. A cloud computing model can be composed of various characteristics (e.g., on-demand self-service, broad network access, resource pooling, rapid elasticity, measured service, etc), service models (e.g., Software as a Service (“SaaS”), Platform as a Service (“PaaS”), Infrastructure as a Service (“IaaS”), and deployment models (e.g., private cloud, community cloud, public cloud, hybrid cloud, etc.).